/**
 * @author
 * Júlio Zynger
 * DRE: 110092466
 */
package view;

import java.util.ArrayList;
import java.util.LinkedHashMap;

import model.AFD;
import model.Estado;
import model.Linguagem;
import controller.Brzozowski;


public class ConsoleVersion {
	
	public static void main(String[] args){
		/*
		Scanner sc = new Scanner(System.in);
		 		
		System.out.println("Quantos símbolos tem o alfabeto?");
		int numSimb = sc.nextInt();
		
		System.out.println("Digite um símbolo de cada vez e pressione enter");
		ArrayList<String> alf = new ArrayList<String>();
		
		for (int i = 0; i <= numSimb; i++) {
			alf.add(sc.nextLine());
		}
		
		System.out.println("Quantos estados tem o autômato?");
		int numEst = sc.nextInt();
		
		System.out.println("Digite o nome do estado de cada vez e pressione enter");
		ArrayList<Estado> est = new ArrayList<Estado>();
		for (int i = 0; i <= numEst; i++) {
			Estado q = new Estado(sc.nextLine(), null);
			est.add(q);
		}
		
		System.out.println("Quantos estados finais tem o autômato?");
		int numEstFin = sc.nextInt();
		
		System.out.println("Digite o nome dos estados finais e pressione enter");
		ArrayList<Estado> fin = new ArrayList<Estado>();
		for (int i = 0; i <= numEstFin; i++) {
			fin.add(est.get(est.indexOf(sc.nextLine())));
		}
		
		for (Estado estado : fin) {
			System.out.println(estado.toString());
		}
		*/
		
		ArrayList<String> alf = new ArrayList<String>();
		alf.add("0");
		alf.add("1");
		
		LinkedHashMap<String, Estado> est = new LinkedHashMap<String, Estado>();
		
		Estado q1 = new Estado("q1", null);
		Estado q2 = new Estado("q2", null);
		Estado q3 = new Estado("q3", null);
		
		est.put("q1",q1);
		est.put("q2",q2);
		est.put("q3",q3);
		
		LinkedHashMap<String, Estado> fin = new LinkedHashMap<String, Estado>();
		fin.put("q2", q2);
		
		LinkedHashMap<String, Estado> tranQ1 = new LinkedHashMap<String, Estado>();
		tranQ1.put("0", q2);
		tranQ1.put("1", q3);
		q1.setTransicoes(tranQ1);
		
		LinkedHashMap<String, Estado> tranQ2 = new LinkedHashMap<String, Estado>();
		tranQ2.put("0", q3);
		tranQ2.put("1", q1);
		q2.setTransicoes(tranQ2);
		
		LinkedHashMap<String, Estado> tranQ3 = new LinkedHashMap<String, Estado>();
		tranQ3.put("0", q3);
		tranQ3.put("1", q3);
		q3.setTransicoes(tranQ3);
		
		AFD teste = new AFD(alf, est, q1, fin);
		System.out.println(teste.brzozowski());
				
		/*boolean aceito = false;
		try {
			aceito = teste.computar("");
		} catch (simboloForaDoAlfabetoException e) {
			e.printStackTrace();
		}
		if(aceito) System.out.println("ACEITEI!");
		else System.out.println("NÃO ACEITO!");*/
	}

}
